package file;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Scanner;

public class Work {
    public static void main(String[] args) throws IOException {
        /*
        File file = new File("./aaa.txt");
        String name = file.getName();
        System.out.println("name:"+name);

        long len = file.length();
        System.out.println("length:"+len);

        boolean ih = file.isHidden();
        boolean cr = file.canRead();
        boolean cw = file.canWrite();
        System.out.println("是否隐藏:"+ih);
        System.out.println("是否可读:"+cr);
        System.out.println("是否可写:"+cw);

        File file1 = new File("./abc.txt");
        if (file1.exists()){
            System.out.println("文件已存在");
        }else {
            file1.createNewFile();
            System.out.println("文件创建成功");
        }
        File dir = new File("./a/b/c");
        if (dir.exists()){
            System.out.println("该目录已存在");
        }else {
            dir.mkdirs();
            System.out.println("该目录创建成功");
        }

        File file2 = new File("./abc.txt");
        if (file2.exists()){
            file2.delete();
            System.out.println("文件或目录已删除");
        }else {
            System.out.println("文件或目录不存在");
        }

        File dir1 = new File(".");
        if (dir1.isFile()){
            System.out.println("是个文件并且已存在");
        }else {
            System.out.println("不是文件或不存在");
        }
        if (dir1.isDirectory()){
            File[] subs = dir1.listFiles();
            System.out.println("当前项目目录下共有:"+subs.length+"个子项");
            for (File sub : subs){
                System.out.println(sub.getName());
            }
        }

         */
        //Test01:在当前项目目录下新建100个文件，名字为:"1.txt"---"100.txt"
        for (int i =  1;i<=100;i++){
            File file = new File("./"+i+".txt");
            if (!file.exists()){
                file.createNewFile();
            }
        }
        System.out.println("创建完毕");

        //Test02：将当前项目目录下1.txt-100.txt文件删除
        for (int i =  1;i<=100;i++){
            File file = new File("./"+i+".txt");
            if (file.exists()){
                file.delete();
            }
        }
        System.out.println("删除完毕");

        //Test03:要求用户在控制台输入一个目录名，然后将这个目录创建在当前项目目录下
        /*
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个目录名");
        String name = scan.next();
        File file = new File("./"+name);
        file.mkdir();
        System.out.println("创建成功");

         */

        //Test04:要求用在控制台输入一个目录名，然后将当前项目目录下的这个目录删除。
        // （只要求删除Test03创建的空目录）
        Scanner scan1 = new Scanner(System.in);
        System.out.println("请输入一个目录名");
        String name1 = scan1.next();
        File file1 = new File("./"+name1);
        file1.delete();
        System.out.println("删除成功");

        //Test05:程序启动后，要求用户输入一个文件名，如果文件存在则提示并要求用户更换，直到该文件还不存在为止，
        //然后将这个文件在当前目录中创建出来。
        while (true) {
            System.out.println("请输入一个目录名");
            String name2 = scan1.next();
            File file = new File(name2+".txt");
            if (file.exists()){
                System.out.println("文在已存在，请更换名称");
            }else {
                file.createNewFile();
                System.out.println("创建成功");
                break;
            }
        }
        //Test06:列出当前目录中所有名字包含s的子项。要求：使用匿名内部类和lambda两种写法
        File dir = new File(".");
        if (dir.isDirectory()){
            FileFilter filter = new FileFilter() {
                public boolean accept(File file) {
                    String name = file.getName();
                    boolean a = name.indexOf("s")>=0;
                    return a;
                }
            };
            File[] subs = dir.listFiles(filter);
            for (File sub : subs){
                System.out.println(sub.getName());
            }
        }

        File dir1 = new File(".");
        if (dir1.isDirectory()){
            File[] subs = dir1.listFiles(file -> file.getName().indexOf("s")>=0);
            for (File sub : subs){
                System.out.println(sub.getName());
            }
        }
    }
}
